package collection

// Partition 创建一个分成两组的元素数组，第一组包含predicate（断言函数）返回为 truthy（真值）的元素，第二组包含predicate（断言函数）返回为 falsey（假值）的元素。
// predicate 调用1个参数：(value)。
func Partition(array []T, predicate func(T) bool) ([]T, []T) {
	var trueTh []T
	var falseTh []T
	for _, value := range array {
		if predicate(value) {
			trueTh = append(trueTh, value)
		} else {
			falseTh = append(falseTh, value)
		}
	}
	return trueTh, falseTh
}
